package ar.unq.edu.svnpermission.utils;


/**
 * Esta clase expone métodos staticos de validacion
 * @author nicolas
 *
 */
public class Validator {
	
	public static final String ONLY_LETTERS="[A-Z][a-zA-Z]*";
	public static final String ONLY_NUMBERS="\\d{8}";
	public static final String EMAIL=".+@.+\\.[a-z]+";
	
	/**
	 * Verifica que un String este compuesto solo por letras
	 * @param toValidate String a validar
	 * @return True si supera la validación, False en caso contrario
	 */
	public static Boolean isOnlyLetters(String toValidate)
	{
		return toValidate.matches(Validator.ONLY_LETTERS);
	}
	
	/**
	 * Verifica que un String este compuesto solo por números
	 * @param toValidate String a validar
	 * @return True si supera la validación, False en caso contrario
	 */	
	public static Boolean isOnlyNumbers(String toValidate)
	{
		return toValidate.matches(Validator.ONLY_NUMBERS);
	}	
	
	/**
	 * Verifica que un String sea un email válido
	 * @param toValidate String a validar
	 * @return True si supera la validación, False en caso contrario
	 */	
	public static Boolean isValidEmail(String toValidate)
	{
		return toValidate.matches(Validator.EMAIL);
	}		
	
	/**
	 * Verifica que un objeto no sea nulo
	 * @param toValidate String a validar
	 * @return True si supera la validación, False en caso contrario
	 */		
	public static Boolean notIsNull(Object toValidate)
	{
		return (toValidate!=null);
	}
	
	/**
	 * Verifica si un String matchee con un criterio de búsqueda
	 * @param value un String sobre el cual se va a verificar
	 * @return True si value coincide con el parámetro buscado o si es vacio. False en caso contrario
	 */
	public static boolean matchWithString(String value, String search)
	{
		return (search.equals("") || value.toLowerCase().contains(search.toLowerCase()));
	}	

}
